#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

using namespace std;

int main()
{
    pid_t id = fork();
    if (id == 0)
    {
        int cnt = 500;
        while (cnt)
        {
            cout << "i am a child process, pid:" << getpid() << endl;
            sleep(1);
            cnt--;
        }

        exit(0);
    }

    int status = 0;
    pid_t rid = waitpid(id,&status,0);
    if(rid = id)
    {
        cout << "child quit info,rid: " << rid 
        << "exit code: " << ((status>>8)&0xFF) //退出码
        << "exit signal: " << (status&0x7F) //退出信号
        << "core dump: " << ((status>>7)&1) //core dump
        << endl; 
    }
}

// void work()
// {
//     cout << "print log... " << endl;
// }

// void handler(int signum)
// {
//     // work();
//     cout <<"get a signum: "<< signum <<endl;
//     // sleep(1);
//      int n = alarm(5);//这个函数的返回值是0或者是以前设定的闹钟时间还余下的秒数
//     cout << "剩余时间:"<< n << endl;
// }
// int main()
// {
//     signal(SIGALRM , handler);
//     int n = alarm(50);

//     while(1)
//     {
//         cout << "procing is runing..., pid:" << getpid() << endl;
//         sleep(1);
//     }

//     // cout << "point error before" <<endl;

//     // sleep(5);

//     // int *p = nullptr;
//     // *p = 100; //野指针

//     // cout << "point error after" <<endl;
//     // sleep(1);

//     return 0;
// }
